﻿// 3710. 递进数字.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <vector>
#include <set>

using namespace std;

/*
https://www.acwing.com/problem/content/3713/

给定两个整数 l,r(l≤r)，请问 [l,r]范围内，满足数字的任意相邻两位差值都恰好为 1
，且数字至少有两位的数有多少个。

输入格式
第一行包含整数 T，表示共有 T组测试数据。

每组数据占一行，包含两个整数 l 和 r。

输出格式
每组数据输出一行，一个结果。

数据范围
1≤T≤100,
0≤l≤r≤3×108
输入样例：
2
1 10
1 100
输出样例：
1
17
*/

set<int> ss;

bool check(const vector<int>& v) {
	return true;
}

void dfs(vector<int> v) {
	if (v.size() == 1 && v[0] == 0) return;
	if (v.size() > 9) return;
	if (v.size() == 9 && v[0] > 3) return;
	if (v.size() == 9 && v[0] == 3) {
		for (int i = 1; i < v.size();i++) {
			if (v[i] > 0) return;
		}
	}

	if (v.size() >= 2) {
		if (check(v)) {
			int t = 0;  
			for (int i = 0; i < v.size(); i++) {
				t *= 10; t += v[i];
			}
			ss.insert(t);
		}
	}

	if (v.back() - 1 >= 0) {
		v.push_back(v.back() - 1);
		dfs(v);
		v.pop_back();
	}

	if (v.back() + 1 <= 9) {
		v.push_back(v.back() + 1);
		dfs(v);
		v.pop_back();
	}
}

void init() {
	vector<int> v;
	for (int i = 0; i <= 9; i++) {
		v.push_back(i);
		dfs(v);
		v.pop_back();
	}
}

int t;


void solve() {
	int l, r;
	cin >> l >> r;
	int ans = 0;
	for (auto e : ss) {
		if (e >= l && e <= r) ans++;
		else if (e > r) break;
	}

	cout << ans << endl;
}


int main()
{
	init();

	cin >> t;
	while (t--) {
		solve();
	}

	return 0;
}

 